#include <iostream>
#include <cuda_runtime.h>
#define DEVICENUM 0

__host__ __device__ int Add(int a, int b)
{
    return a + b;
}

__global__ void HelloWorldGpu() // 设备端device代码
{
    printf("GPU:Hello world\n");
    int result = Add(3, 4);
    printf("GPU Result=%d\n", result);
}

int main(int argc, char **argv)
{
    int result = Add(3, 4);
    std::cout << "CPU Result = " << result << std::endl;

    cudaSetDevice(DEVICENUM);
    HelloWorldGpu<<<1, 10>>>(); // 这是个核函数，注意，这个对主机来说是异步操作，调用后立即返回
    cudaDeviceReset();          // 显式地释放和清空当前进程中与当前设备有关的所有资源
    return 0;
}